package model;

import javax.swing.JOptionPane;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author
 * Abraão de Santana
 * Jorge Thiago
 * Leandro C. Arantes
 */
public class Processo {
    
    //Declara os estados de um processo
    
    public static String SUSPENSO = "suspenso";
    public static String BLOQUEADO = "bloqueado";
    public static String PRONTO = "pronto";
    public static String TERMINADO = "terminado";
    public static String EXECUTANDO = "executando";
    public static String NAO_CRIADO = "não criado";
    public static String NOVO = "novo";

    
    //Declara e inicializa as variáveis
    
    private int id = -1; //Identificador do processo
    private int tempoDeChegada = -1; //Momento da chegada do processo
    private int prioridade = -1;
    private int tempoDoProcessamento = -1;
    private int mBytes = -1;
    private int impressoras = -1;
    private int scanner = -1;
    private int modem = -1;
    private int driveCD = -1;
    
    private String estado = NAO_CRIADO; //Inicializa o estado do processo

    public Processo(int tempoDeChegada, int prioridade, int tempoDoProcessamento, int mBytes, int impressora, int scanner, int modem, int driveCD) {
        this.tempoDeChegada = tempoDeChegada; //Momento de chegada do processo
        this.prioridade = prioridade; // Prioridade do processo
        this.tempoDoProcessamento = tempoDoProcessamento;
        this.mBytes = mBytes; //tamanho do processo
        this.impressoras = impressora; 
        this.scanner = scanner;
        this.modem = modem;
        this.driveCD = driveCD;
    }

    public Processo() {
    }

    public int getTempoDeChegada() {
        return tempoDeChegada;
    }

    public int getCds() {
        return driveCD;
    }

    public int getmBytes() {
        return mBytes;
    }

    public int getModem() {
        return modem;
    }

    public int getImpressoras() {
        return impressoras;
    }

    public int getPrioridade() {
        return prioridade;
    }

    public int getTempoDoProcessamento() {
        return tempoDoProcessamento;
    }

    public int getScanner() {
        return scanner;
    }

    public void setTempoDeChegada(int tempoDeChegada) {
        this.tempoDeChegada = tempoDeChegada;
    }

    public void setDrivreCD(int driveCD) {
        this.driveCD = driveCD;
    }

    public void setmBytes(int mBytes) {
        this.mBytes = mBytes;
    }

    public void setModem(int modem) {
        this.modem = modem;
    }

    public void setImpressoras(int impressoras) {
        this.impressoras = impressoras;
    }

    public void setPrioridade(int prioridade) {
        this.prioridade = prioridade;
    }

    public void setTempoDoProcessador(int tempoDoProcessador) {
        this.tempoDoProcessamento = tempoDoProcessador;
    }

    public void setScanner(int scanner) {
        this.scanner = scanner;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getEstado() {
        return estado;
    }

    public void setEstado(String estado) {
        this.estado = estado;
        showProcessStatus();
    }

    private void showProcessStatus()
    {
        JOptionPane.showMessageDialog(null, "Processo nº " + this.getId() + " agora está no estado " + this.getEstado() +
                "\nTempo do Sistema : " + control.SistemaOperacional.getSystemTime() +
                "\nPrioridade: " + this.getPrioridade() );
    }

}
